﻿using System;
using System.Collections.Generic;
using System.Text;
using FBWMS;

namespace FBWMS
{
    public class G_CommonClassCompress
    {
        //コンストラクタ
        public G_CommonClassCompress()
        {
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Compress_DeCompression
        // Parameter : zipPath      :   展開するZIPファイル
        //           : extractDir   :   展開先のフォルダ
        // Return    : True Or False
        // Contents  : OS情報取得
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Compress_DeCompression(string zipPath, string extractDir)
        {
            //読み込む
            java.io.FileInputStream fis = new java.io.FileInputStream(zipPath);
            java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(fis);

            //ZIP内のファイル情報を取得
            java.util.zip.ZipEntry ze;
            while ((ze = zis.getNextEntry()) != null)
            {
                if (!ze.isDirectory())
                {
                    //ファイル名
                    string fileName = System.IO.Path.GetFileName(ze.getName());
                    //展開先のフォルダ
                    string destDir = System.IO.Path.Combine(
                        extractDir, System.IO.Path.GetDirectoryName(ze.getName()));
                    System.IO.Directory.CreateDirectory(destDir);
                    //展開先のパス
                    string destPath = System.IO.Path.Combine(destDir, fileName);
                    //FileOutputStreamの作成
                    java.io.FileOutputStream fos =
                        new java.io.FileOutputStream(destPath);
                    //書込み
                    sbyte[] buffer = new sbyte[8192];
                    int len;
                    while ((len = zis.read(buffer, 0, buffer.Length)) > 0)
                    {
                        fos.write(buffer, 0, len);
                    }
                    //閉じる
                    fos.close();
                }
            }
            zis.close();
            fis.close();

            return true;
        }
    }
}
